why do software engineers make so much